#!usr/bin/env python  
# -*- coding:utf-8 -*-
""" 
@author:robot
@file: title022.py 
@version:
@time: 2023/05/14
step 1：遍历字符串每个字符。
step 2：以每次遍历到的字符为中心（分奇数长度和偶数长度两种情况），不断向两边扩展。
step 3：如果两边都是相同的就是回文，不断扩大到最大长度即是以这个字符（或偶数两个）为中心的最长回文子串。
step 4：我们比较完每个字符为中心的最长回文子串，取最大值即可。
"""


class Solution:
    def fun(self, s: str, begin: int, end: int) -> int:
        # 每个中心点开始扩展
        while begin >= 0 and end < len(s) and s[begin] == s[end]:
            begin -= 1
            end += 1
        # 返回长度
        return end - begin - 1

    def getLongestPalindrome(self, A: str) -> int:
        maxlen = 1
        # 以每个点为中心
        for i in range(len(A) - 1):
            # 分奇数长度和偶数长度向两边扩展
            maxlen = max(maxlen, max(self.fun(A, i, i), self.fun(A, i, i + 1)))
        return maxlen

    def fun2(self, s, begin, end):
        while s[begin] == s[end] and begin >= 0 and end < len(s):
            begin -= 1
            end += 1
        return end - begin - 1

    def solution(self, A):
        maxlen = 1
        for i in range(len(A) - 1):
            maxlen = max(maxlen, self.fun2(A, i, i), self.fun2(A, i, i + 1))
        return maxlen

assert Solution().solution('bab') == 2